# 从hm_message包导入工具
from hm_message import send_message

send_message.send()
# 从hm_message包对应模块导入工具
from hm_message.receive_message import receive

receive()

# 定义变量： 不可变数据类型
num = 100
# 查看变量的引用（数据在内存的中地址）
print(id(num))
# 重新赋值（不可变类型需要改变空间）
num = 200
print(id(num))  # 重新赋值结果将会不一样

# 定义变量：可变类型
list1 = [1, 2, 3]
print(id(list1))
# 查看数据/变量的引用
list1.append(4)
print(id(list1))


# 局部变量
# python基础. 定义函数 login_front 实现前台系统登录
# 2. 定义函数 login_back 实现后台登录
# 3. 要求使用同样的变量名, 分别记录前后台登录信息中的账号和密码
# def login_front():
#     # 定义局部变量
#     username = "13877585024"
#     password = "123456"
#     # 登录成功
#     print(f"登录成功，账号为：{username}, 密码为：{password}")
#
#
# def login_back():
#     # 定义局部变量
#     username = "admin"
#     password = "123456"
#     # 登录成功
#     print(f"登录成功，账号：{username}, 密码：{password}")
#
#
# # 调用函数
# login_front()
# login_back()


# 全局变量
# python基础. 定义函数 login_front 实现前台系统登录
# 2. 定义函数 login_back 实现后台登录
# 3. 要求密码使用同样的全局变量名, 分别记录前后台登录信息中的账号和密码
def login_front():
    # 定义局部变量
    username = "13877523208"
    # password = "123456"
    # 打印登录成功
    print(f"登录成功，账号：{username}, 密码：{password}")


def login_back():
    username = "admin"
    password = "6666"
    # 打印登录成功
    print(f"登录成功，账号：{username}, 密码：{password}")


# 调用函数
password = "123456"  # 定义全局变量
login_front()
login_back()


# 全局和局部变量案例
def add_test(num1, num2):
    # 局部变量
    num1 = 100
    print(num1 + num2)
def sub_test(num1, num2):
    print(num1 - num2)
add_test(10, 200)
sub_test(10, 200)
# 有局部优先使用局部变量，没有再使用全局变量


# 全局变量修改
# 需要使用全局变量，但是又不想用它自己提供的值，请问如何处理？
# 全局变量
num = 15
def demo1():
    num = 150
    print(num)
def demo2():
    # 需要用全局变量num,但是此刻的值变为200
    global num # 声明该变量时全局变量
    num = 250 # 重新赋值
    print(num)
def demo3():
    # 因为全局变量已经被修改过了，所以以后就一直使用新的全局变量
    print(num)
# 调用函数
demo1()
demo2()
demo3()